import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'
Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    goods:[], // 商品的数据
    cartList:[], // 购物车的数据
  },
  getters: {
    allPrice(state){ // 总价
      let price = 0;
      state.cartList.forEach(item => {
         if (item.check){
          price+=item.buyNum*item.price
         }
      })
      return price;
    },
    allNum(state){ // 总数
      let num = 0;
      state.cartList.forEach(item => {
         if (item.check){
          num+=item.buyNum
         }
      })
      return num;
    }
  },
  mutations: {
    saveGood(state,val){ // 存储购物车数据的方法
      state.goods = val;
    },
    addCart(state,val){
      let obj = {...val,check:false,buyNum:1};
      // state.cartList.push(obj);
      // findIndex 查找数组中符合条件的下标 找到就返回索引 否侧就返回 -1
      // let arr = [10,20,30,40];
      // console.log(arr.findIndex(item => item == 60));
      let index = state.cartList.findIndex(item => item.id == val.id);
      // console.log(index);
      if (index>-1){ // 判断商品是否存在
        state.cartList[index].buyNum++;
      } else {
        state.cartList.push(obj);
      }
      
    },
    allCheck(state,bool){ // 全选的方法
      // console.log(bool);
      state.cartList.forEach(item => {
        item.check = bool
      })
    },
    delect(state){ // 删除所选
      // state.cartList = state.cartList.filter(item => item.check==false);
      state.cartList = state.cartList.filter(item => !item.check);
    }
  },
  actions: {
    getGoods({commit}){ // 通过请求获取数据
      axios.get('data.json').then(res => {
        commit('saveGood',res.data);
      })
    }
  },
  modules: {
  }
})
